<html>
<head><meta charset="utf-8"><title>polonius subset considered unnecessary · t-compiler/wg-nll · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/index.html">t-compiler/wg-nll</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html">polonius subset considered unnecessary</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="148869608"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148869608" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148869608">(Nov 30 2018 at 15:51)</a>:</h4>
<p><em>So</em>, I've been thinking about the polonius rules. I .. am pretty sure that the transitive closure computation for subset is just plain unnecessary, if the main thing you are interested in is which loans are live at a particular point. </p>
<p>Interestingly, cloning the naive rules and removing the transitive closure for subset yields both a simple, readable specification, but <strong>also</strong> a faster one:</p>
<table>
<thead>
<tr>
<th>Algorithm</th>
<th>Time for clap-rs</th>
<th>LOC</th>
</tr>
</thead>
<tbody>
<tr>
<td>Naive</td>
<td>31.73s</td>
<td>221</td>
</tr>
<tr>
<td>DatafrogOpt</td>
<td>3.929s</td>
<td>454</td>
</tr>
<tr>
<td>Reachable</td>
<td>2.360s</td>
<td>165</td>
</tr>
<tr>
<td>LocationInsensitive</td>
<td>0.646s</td>
<td>153</td>
</tr>
</tbody>
</table>



<a name="148869612"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148869612" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148869612">(Nov 30 2018 at 15:51)</a>:</h4>
<p>cc <span class="user-mention" data-user-id="116113">@lqd</span> <span class="emoji emoji-1f446" title="point up">:point_up:</span></p>



<a name="148869683"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148869683" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148869683">(Nov 30 2018 at 15:52)</a>:</h4>
<p>oh, nice</p>



<a name="148869694"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148869694" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148869694">(Nov 30 2018 at 15:52)</a>:</h4>
<p>I think the reason I always wanted to keep the transitive closure computation for subset before was because we're going to need <em>something</em> like it in order to deal with errors around lifetime parameters.</p>



<a name="148869703"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148869703" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148869703">(Nov 30 2018 at 15:53)</a>:</h4>
<p>But I think you can model those as special loans (which is basically what they are anyway)</p>



<a name="148869714"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148869714" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148869714">(Nov 30 2018 at 15:53)</a>:</h4>
<p>I'm sort of annoying by all this though :P because I thought I had some great insight yesterday about a new rule to add that would "carry" <code>requires</code> relationships across cfg edges.</p>



<a name="148869724"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148869724" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148869724">(Nov 30 2018 at 15:53)</a>:</h4>
<p>but it turns out my insight is mostly that some of my old rules were unnecessary :P</p>



<a name="148869732"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148869732" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148869732">(Nov 30 2018 at 15:53)</a>:</h4>
<p>somehow doesn't feel as nice ;)</p>



<a name="148869791"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148869791" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148869791">(Nov 30 2018 at 15:54)</a>:</h4>
<p>the result is good tho</p>



<a name="148869818"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148869818" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148869818">(Nov 30 2018 at 15:54)</a>:</h4>
<p>did you by any chance run the rustc test suite with the Reachable variant ?</p>



<a name="148870137"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870137" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870137">(Nov 30 2018 at 15:59)</a>:</h4>
<p>it's funny that this whole thing started with "optimizing the transitive closure" subject and we just needed to optimize it away :)</p>



<a name="148870618"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870618" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870618">(Nov 30 2018 at 16:05)</a>:</h4>
<blockquote>
<p>did you by any chance run the rustc test suite with the Reachable variant ?</p>
</blockquote>
<p>not yet</p>



<a name="148870625"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870625" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870625">(Nov 30 2018 at 16:05)</a>:</h4>
<p>I just build the latest master</p>



<a name="148870628"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870628" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870628">(Nov 30 2018 at 16:05)</a>:</h4>
<blockquote>
<p>model those as special loans<br>
would this be in the polonius rules or in rustc's "lowering" to facts ?</p>
</blockquote>



<a name="148870672"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870672" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870672">(Nov 30 2018 at 16:06)</a>:</h4>
<p>probably polonius rules</p>



<a name="148870676"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870676" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870676">(Nov 30 2018 at 16:06)</a>:</h4>
<p>in particular, it knows the set of universal regions</p>



<a name="148870678"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870678" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870678">(Nov 30 2018 at 16:06)</a>:</h4>
<p>but I guess could be either</p>



<a name="148870684"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870684" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870684">(Nov 30 2018 at 16:06)</a>:</h4>
<p>I'd sort of like push more and more into polonius eventually though</p>



<a name="148870693"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870693" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870693">(Nov 30 2018 at 16:06)</a>:</h4>
<p>the tl;dr is that if you have some outlives relationships that ultimately require <code>'a: 'b</code></p>



<a name="148870698"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870698" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870698">(Nov 30 2018 at 16:06)</a>:</h4>
<p>we need to know that and check that the user declared it</p>



<a name="148870705"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870705" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870705">(Nov 30 2018 at 16:06)</a>:</h4>
<p>but what this is really saying <em>in polonius terms</em></p>



<a name="148870711"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870711" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870711">(Nov 30 2018 at 16:07)</a>:</h4>
<p>is that the set of loans in 'a had better be a subset of the set of loans in 'b</p>



<a name="148870721"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870721" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870721">(Nov 30 2018 at 16:07)</a>:</h4>
<p>so if we say that there is some special loan La that is <em>only</em> in <code>'a</code></p>



<a name="148870749"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870749" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870749">(Nov 30 2018 at 16:07)</a>:</h4>
<p>and we find that <code>requires('b, La, P)</code> for some point P...</p>



<a name="148870804"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870804" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870804">(Nov 30 2018 at 16:08)</a>:</h4>
<p>...then the user must have declared that <code>'a: 'b</code> or else it's an error</p>



<a name="148870811"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870811" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870811">(Nov 30 2018 at 16:08)</a>:</h4>
<p>something like that, though it has to be extended to higher universes too, but the same principle applies</p>



<a name="148870819"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870819" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870819">(Nov 30 2018 at 16:08)</a>:</h4>
<p>oh interesting yeah</p>



<a name="148870842"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870842" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870842">(Nov 30 2018 at 16:09)</a>:</h4>
<p>just the fact that's possible to do without needing the TC is good in any case</p>



<a name="148870845"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870845" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870845">(Nov 30 2018 at 16:09)</a>:</h4>
<p>basically we can encode the outlives relationships from the declaration as relations</p>



<a name="148870940"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870940" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870940">(Nov 30 2018 at 16:10)</a>:</h4>
<p>and then search for errors like:</p>
<div class="codehilite"><pre><span></span>universal_region_error :-
  universal_region(Ra, La), // universal region Ra has associated loan Lb
  universal_region(Rb, _),
  requires(Rb, La, _P),
  !universal_region_subset_transitive(Ra, Rb).
</pre></div>



<a name="148870975"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870975" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870975">(Nov 30 2018 at 16:11)</a>:</h4>
<p>(note that some of the rustc tests <em>will fail</em> in the polonius mode; when I completed the cfg compression around the beginning of october there were then 37 of those failing tests if I remember correctly)</p>



<a name="148870984"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148870984" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148870984">(Nov 30 2018 at 16:11)</a>:</h4>
<p>ps, <span class="user-mention" data-user-id="116113">@lqd</span>, note that in the new rules all the transitive  computation is in the <code>requires</code> relation, so it's really quite simple to restrict it only to loans we care about.</p>



<a name="148871032"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871032" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871032">(Nov 30 2018 at 16:12)</a>:</h4>
<p>i.e., if we compute the "maybe failing" loans using a first pass location insensitive analysis</p>



<a name="148871041"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871041" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871041">(Nov 30 2018 at 16:12)</a>:</h4>
<p>yeah that's why I wanted to do a baseline run</p>



<a name="148871049"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871049" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871049">(Nov 30 2018 at 16:12)</a>:</h4>
<p>I will try to get that going now</p>



<a name="148871060"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871060" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871060">(Nov 30 2018 at 16:12)</a>:</h4>
<p>oh that's good for the possible location insensitive prepass</p>



<a name="148871062"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871062" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871062">(Nov 30 2018 at 16:12)</a>:</h4>
<p>yep</p>



<a name="148871088"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871088" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871088">(Nov 30 2018 at 16:13)</a>:</h4>
<p>which runs in 0.6s</p>



<a name="148871102"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871102" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871102">(Nov 30 2018 at 16:13)</a>:</h4>
<p>so it still laps all the others ;)</p>



<a name="148871106"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871106" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871106">(Nov 30 2018 at 16:13)</a>:</h4>
<p>I have it in 100ms</p>



<a name="148871115"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871115" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871115">(Nov 30 2018 at 16:13)</a>:</h4>
<p>I haven't integrated your latest changes to datafrog yet</p>



<a name="148871117"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871117" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871117">(Nov 30 2018 at 16:13)</a>:</h4>
<p>with the "leapfrog" join</p>



<a name="148871118"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871118" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871118">(Nov 30 2018 at 16:13)</a>:</h4>
<p>though I have them on a branch</p>



<a name="148871123"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871123" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871123">(Nov 30 2018 at 16:13)</a>:</h4>
<p>I have to go lookup the cargo syntax for dealing with that</p>



<a name="148871130"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871130" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871130">(Nov 30 2018 at 16:14)</a>:</h4>
<p>I guess I could just rewrite the toml to a path dependency</p>



<a name="148871167"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871167" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871167">(Nov 30 2018 at 16:14)</a>:</h4>
<p>replace/patch ?</p>



<a name="148871169"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871169" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871169">(Nov 30 2018 at 16:14)</a>:</h4>
<p>that feels so dirty</p>



<a name="148871176"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871176" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871176">(Nov 30 2018 at 16:14)</a>:</h4>
<p>right</p>



<a name="148871182"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871182" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871182">(Nov 30 2018 at 16:14)</a>:</h4>
<p>I just remember there are two ways to do it and I can never figure out why there are 2</p>



<a name="148871194"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871194" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871194">(Nov 30 2018 at 16:14)</a>:</h4>
<p>does one of them not require me to edit the actual Cargo.toml?</p>



<a name="148871197"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871197" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871197">(Nov 30 2018 at 16:14)</a>:</h4>
<p>that feels like the right one :)</p>



<a name="148871221"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871221" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871221">(Nov 30 2018 at 16:15)</a>:</h4>
<p>also, I am...mostly happy since switching to DuckDuckGo, but dang does it suck at searches with the word "cargo" in them</p>



<a name="148871223"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871223" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871223">(Nov 30 2018 at 16:15)</a>:</h4>
<p>I don't think we can avoid editing cargo.toml can we ?</p>



<a name="148871229"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871229" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871229">(Nov 30 2018 at 16:15)</a>:</h4>
<p>apparently it really helps to know who I am for that :P</p>



<a name="148871236"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871236" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871236">(Nov 30 2018 at 16:15)</a>:</h4>
<blockquote>
<p>I don't think we can avoid editing cargo.toml can we ?</p>
</blockquote>
<p>it feels like you should be able...</p>



<a name="148871238"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871238" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871238">(Nov 30 2018 at 16:15)</a>:</h4>
<p>anyway not germane :)</p>



<a name="148871245"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871245" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871245">(Nov 30 2018 at 16:15)</a>:</h4>
<p>I'd like to be able to do tests like this without having files git considers dirty in my repo :P</p>



<a name="148871307"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871307" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871307">(Nov 30 2018 at 16:16)</a>:</h4>
<p>the <span class="emoji emoji-1f438" title="frog">:frog:</span> changes would also allow to reopen/redo the "specialization" datafrog PR removing some allocations</p>



<a name="148871317"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871317" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871317">(Nov 30 2018 at 16:16)</a>:</h4>
<p>and ofc changing the variants to use the join</p>



<a name="148871352"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871352" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871352">(Nov 30 2018 at 16:17)</a>:</h4>
<p>although I think there's something I need to work out (or with Frank), possibly a bug/misunderstanding in the join, which would allow to remove more temporary indices</p>



<a name="148871438"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871438" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871438">(Nov 30 2018 at 16:18)</a>:</h4>
<p>(no big deal, it's some uncommon cases, like where the regular join should have the same behaviour, although being able to work on Relations over Variables would allow these indices to be removed)</p>



<a name="148871472"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871472" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871472">(Nov 30 2018 at 16:19)</a>:</h4>
<p>I actually can't find any docs for <code>[replace]</code> etc in <a href="https://doc.rust-lang.org/cargo/reference/" target="_blank" title="https://doc.rust-lang.org/cargo/reference/">https://doc.rust-lang.org/cargo/reference/</a></p>



<a name="148871487"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871487" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871487">(Nov 30 2018 at 16:19)</a>:</h4>
<p>yeah it's patch IIRC</p>



<a name="148871488"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871488" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871488">(Nov 30 2018 at 16:19)</a>:</h4>
<p>ah, found it</p>



<a name="148871489"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871489" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871489">(Nov 30 2018 at 16:19)</a>:</h4>
<p><a href="https://doc.rust-lang.org/cargo/reference/source-replacement.html" target="_blank" title="https://doc.rust-lang.org/cargo/reference/source-replacement.html">https://doc.rust-lang.org/cargo/reference/source-replacement.html</a></p>



<a name="148871504"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871504" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871504">(Nov 30 2018 at 16:19)</a>:</h4>
<p>oh but also replace wow</p>



<a name="148871571"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871571" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871571">(Nov 30 2018 at 16:20)</a>:</h4>
<p>at least it's documented yay</p>



<a name="148871595"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871595" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871595">(Nov 30 2018 at 16:20)</a>:</h4>
<p><span class="user-mention" data-user-id="116113">@lqd</span> so when I use your branch</p>



<a name="148871598"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871598" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871598">(Nov 30 2018 at 16:20)</a>:</h4>
<p>do I also have to edit the source?</p>



<a name="148871600"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871600" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871600">(Nov 30 2018 at 16:20)</a>:</h4>
<p>yeah</p>



<a name="148871601"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871601" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871601">(Nov 30 2018 at 16:20)</a>:</h4>
<p>or will <code>from_join</code> and friends use it automatically</p>



<a name="148871619"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871619" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871619">(Nov 30 2018 at 16:21)</a>:</h4>
<p>it's a completely different api unfortunately</p>



<a name="148871629"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871629" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871629">(Nov 30 2018 at 16:21)</a>:</h4>
<p>oh</p>



<a name="148871633"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871633" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871633">(Nov 30 2018 at 16:21)</a>:</h4>
<p>:)</p>



<a name="148871641"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871641" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871641">(Nov 30 2018 at 16:21)</a>:</h4>
<p>I'll try to get you one of the variants using it</p>



<a name="148871649"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871649" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871649">(Nov 30 2018 at 16:21)</a>:</h4>
<p>well hold up</p>



<a name="148871651"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871651" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871651">(Nov 30 2018 at 16:21)</a>:</h4>
<p>I'll open a PR with my changes I guess</p>



<a name="148871652"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871652" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871652">(Nov 30 2018 at 16:21)</a>:</h4>
<p>then you can port that ;)</p>



<a name="148871655"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871655" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871655">(Nov 30 2018 at 16:22)</a>:</h4>
<p>lol</p>



<a name="148871696"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871696" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871696">(Nov 30 2018 at 16:22)</a>:</h4>
<p>well</p>



<a name="148871699"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871699" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871699">(Nov 30 2018 at 16:22)</a>:</h4>
<p>if you have a link ready</p>



<a name="148871700"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871700" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871700">(Nov 30 2018 at 16:22)</a>:</h4>
<p>that's fine too</p>



<a name="148871710"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871710" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871710">(Nov 30 2018 at 16:22)</a>:</h4>
<p>I can take care of it</p>



<a name="148871757"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871757" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871757">(Nov 30 2018 at 16:23)</a>:</h4>
<p>but here's <a href="https://gist.github.com/lqd/2b227413a20e6840bd5516b69f01caf8" target="_blank" title="https://gist.github.com/lqd/2b227413a20e6840bd5516b69f01caf8">an example</a> of the location_insensitive variant using the treefrog join just to show you how different it is</p>



<a name="148871835"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871835" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871835">(Nov 30 2018 at 16:24)</a>:</h4>
<p>I guess <a href="https://github.com/frankmcsherry/blog/blob/master/posts/2018-05-19.md#addendum-2018-05-21-treefrog-leapjoin" target="_blank" title="https://github.com/frankmcsherry/blog/blob/master/posts/2018-05-19.md#addendum-2018-05-21-treefrog-leapjoin">Frank's post</a> also shows some, but I'll port Reachable and push the other 2 I've already done then</p>



<a name="148871943"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148871943" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148871943">(Nov 30 2018 at 16:26)</a>:</h4>
<p>(unrelated: about the switch to "beta" -- since you're removing <code>try</code> do we still need the tests returning a <code>Result&lt;(), Error&gt;</code> ?)</p>



<a name="148872039"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148872039" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148872039">(Nov 30 2018 at 16:28)</a>:</h4>
<p>PS I updated my table with LOC just for fun:</p>
<table>
<thead>
<tr>
<th>Algorithm</th>
<th>Time for clap-rs</th>
<th>LOC</th>
</tr>
</thead>
<tbody>
<tr>
<td>Naive</td>
<td>31.73s</td>
<td>221</td>
</tr>
<tr>
<td>DatafrogOpt</td>
<td>3.929s</td>
<td>454</td>
</tr>
<tr>
<td>Reachable</td>
<td>2.360s</td>
<td>165</td>
</tr>
<tr>
<td>LocationInsensitive</td>
<td>0.646s</td>
<td>153</td>
</tr>
</tbody>
</table>



<a name="148872056"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148872056" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148872056">(Nov 30 2018 at 16:28)</a>:</h4>
<blockquote>
<p>(unrelated: about the switch to "beta" -- since you're removing <code>try</code> do we still need the tests returning a <code>Result&lt;(), Error&gt;</code> ?)</p>
</blockquote>
<p>ah, I ... guess not? depends if they are using <code>?</code> I guess?</p>



<a name="148872167"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148872167" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148872167">(Nov 30 2018 at 16:30)</a>:</h4>
<p>Reachable is going to be short and sweet :)</p>



<a name="148872219"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148872219" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148872219">(Nov 30 2018 at 16:30)</a>:</h4>
<p>(ok I'll comment on the rustfmt PR -- or meh actually, no big deal, we can have an <code>?</code> instead of an <code>.expect()</code> :)</p>



<a name="148872356"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148872356" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148872356">(Nov 30 2018 at 16:32)</a>:</h4>
<p>I'm gonna merge <a href="https://github.com/rust-lang-nursery/polonius/pull/85" target="_blank" title="https://github.com/rust-lang-nursery/polonius/pull/85">https://github.com/rust-lang-nursery/polonius/pull/85</a></p>



<a name="148872374"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148872374" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148872374">(Nov 30 2018 at 16:32)</a>:</h4>
<p>I've decided it's worth avoiding nightly dependencies in stuff the compiler uses if at all possible</p>



<a name="148872382"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148872382" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148872382">(Nov 30 2018 at 16:32)</a>:</h4>
<p>even if not <em>strictly</em> necessary</p>



<a name="148872405"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148872405" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148872405">(Nov 30 2018 at 16:33)</a>:</h4>
<p>do you want to switch to stable on dec 6 ?</p>



<a name="148873317"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148873317" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148873317">(Nov 30 2018 at 16:49)</a>:</h4>
<p>ideally, but beta suffices</p>



<a name="148873320"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148873320" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148873320">(Nov 30 2018 at 16:49)</a>:</h4>
<p>since the compiler builds on beta :)</p>



<a name="148873851"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148873851" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148873851">(Nov 30 2018 at 16:56)</a>:</h4>
<p>sure :)</p>



<a name="148873884"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148873884" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148873884">(Nov 30 2018 at 16:57)</a>:</h4>
<p>(I wonder how would CFG compression behave over the Reachable variant)</p>



<a name="148875259"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148875259" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148875259">(Nov 30 2018 at 17:20)</a>:</h4>
<p>(oh I forgot, in my CFG compression PR, there's also the dataset from the rustc "polonius smoke test"; it's an interesting one because IIRC it also contained functions which shouldn't compile, &amp; important to have as we currently mostly test loans and not errors yet)</p>



<a name="148878353"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148878353" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthew Jasper <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148878353">(Nov 30 2018 at 18:17)</a>:</h4>
<p>Maybe I'm missing something, how does this work without TC?</p>
<div class="codehilite"><pre><span></span><span class="k">fn</span> <span class="nf">f</span><span class="p">(</span><span class="n">x</span>: <span class="kp">&amp;</span><span class="nc">mut</span><span class="w"> </span><span class="o">&amp;</span><span class="kt">i32</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="kd">let</span><span class="w"> </span><span class="n">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">x</span><span class="p">;</span><span class="w"></span>
<span class="w">    </span><span class="o">*</span><span class="n">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&amp;</span><span class="n">g</span><span class="p">();</span><span class="w"> </span><span class="c1">// how does this loan end up having to outlive the function?</span>
<span class="p">}</span><span class="w"></span>
</pre></div>



<a name="148879026"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148879026" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148879026">(Nov 30 2018 at 18:27)</a>:</h4>
<p>let me check because I may be missing something :)</p>



<a name="148879145"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148879145" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148879145">(Nov 30 2018 at 18:29)</a>:</h4>
<p>(that is, maybe that's the piece I was missing; I remember doing many rounds in the original polonius days with various examples of how info had to travel)</p>



<a name="148879195"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148879195" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148879195">(Nov 30 2018 at 18:30)</a>:</h4>
<p>(and I was planning on reproducing those rounds as part of a write-up :)</p>



<a name="148879272"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148879272" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148879272">(Nov 30 2018 at 18:31)</a>:</h4>
<p>before that:</p>
<div class="codehilite"><pre><span></span>./x.py test src/test/ui --compare-mode polonius --bless
</pre></div>


<p>gives me </p>
<div class="codehilite"><pre><span></span>FAILED. 177 passed; 17 failed; 4847 ignored; 0 measured; 0 filtered out
</pre></div>



<a name="148879431"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148879431" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148879431">(Nov 30 2018 at 18:33)</a>:</h4>
<p><span class="user-mention" data-user-id="116118">@Matthew Jasper</span> but yeah you may be right :) maybe this is a false insight =)</p>



<a name="148879495"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148879495" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148879495">(Nov 30 2018 at 18:34)</a>:</h4>
<p>I guess that those 17 failures are not including my fixes though</p>



<a name="148885336"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148885336" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148885336">(Nov 30 2018 at 20:03)</a>:</h4>
<blockquote>
<p>but it turns out my insight is mostly that some of my old rules were unnecessary :P</p>
</blockquote>
<p>IMO those are amongst the best insights :D</p>



<a name="148886177"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148886177" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148886177">(Nov 30 2018 at 20:16)</a>:</h4>
<p>except when maybe it is wrong...I have to think a bit more, but I think I may have just forgotten about an important part of how polonius works (which <span class="user-mention" data-user-id="116118">@Matthew Jasper</span> reminded me of :P)</p>



<a name="148886181"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148886181" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148886181">(Nov 30 2018 at 20:16)</a>:</h4>
<p>but right now i'm trying to do reviews :)</p>



<a name="148892193"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/polonius%20subset%20considered%20unnecessary/near/148892193" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/polonius.20subset.20considered.20unnecessary.html#148892193">(Nov 30 2018 at 21:53)</a>:</h4>
<p>/me still on the edge of my seat :p</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>